home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.5)
-
- from ZSI import _get_element_nsuri_name, SoapWriter, ParsedSoap
- from interfaces import HandlerChainInterface
- from zope.interface import classProvides, implements, Interface
-
- class DataHandler:
- classProvides(HandlerChainInterface)
- readerClass = None
-
- def processRequest(cls, input, **kw):
- return ParsedSoap(input, readerclass = cls.readerClass)
-
- processRequest = classmethod(processRequest)
-
- def processResponse(cls, sw, **kw):
- return str(sw)
-
- processResponse = classmethod(processResponse)
-
-
- class CallbackHandler:
- classProvides(HandlerChainInterface)
- writerClass = None
-
- def processRequest(cls, ps, **kw):
- resource = kw['resource']
- request = kw['request']
- method = getattr(resource, 'soap_%s' % _get_element_nsuri_name(ps.body_root)[-1])
-
- try:
- (req, rsp) = method(ps, request = request)
- except Exception:
- ex = None
- raise
-
- return rsp
-
- processRequest = classmethod(processRequest)
-
- def processResponse(cls, output, **kw):
- sw = SoapWriter(outputclass = cls.writerClass)
- sw.serialize(output)
- return sw
-
- processResponse = classmethod(processResponse)
-
-
- class ReverseHandlerChain:
-
- def __init__(self, *handlers):
- self.in_handlers = handlers
- handlers = list(handlers)
- handlers.reverse()
- self.out_handlers = tuple(handlers)
-
-
- def processRequest(self, arg, **kw):
- for h in self.in_handlers:
- arg = h.processRequest(arg, **kw)
-
- return arg
-
-
- def processResponse(self, arg, **kw):
- if arg is None:
- return None
-
- for h in self.out_handlers:
- arg = h.processResponse(arg, **kw)
-
- return arg
-
-
-
- class ReverseHandlerChainFactory:
- protocol = ReverseHandlerChain
-
- def newInstance(cls):
- return cls.protocol(DataHandler, CallbackHandler)
-
- newInstance = classmethod(newInstance)
-
-